package com.gxa.day2022_08_09_28.emp_dept_system.ui.frame;



import com.gxa.day2022_08_09_28.emp_dept_system.entity.Emp;
import com.gxa.day2022_08_09_28.emp_dept_system.service.EmpService;
import com.gxa.day2022_08_09_28.emp_dept_system.service.impl.EmpServiceImpl;
import com.gxa.day2022_08_09_28.emp_dept_system.ui.tablemodel.EmpTableModel;

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class MainFrame {
    private static JTable empTable;
    /**
     * 运行frame
     */
    public void launchFrame(){
        JFrame mainFrame = new JFrame("主界面");
        mainFrame.setLayout(null);
        mainFrame.setSize(900,600);
        mainFrame.setLocationRelativeTo(null);
        mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


        addWidget2Frame(mainFrame);


        mainFrame.setVisible(true);

    }

    /**
     * 向frame上添加组件
     * @param frame
     */
    public void addWidget2Frame(JFrame frame){
        JButton addButton = new JButton("添加雇员");


        JButton updateButton = new JButton("修改雇员");


        JButton delButton = new JButton("删除雇员");

        addButton.setBounds(100,100,100,20);
        updateButton.setBounds(210,100,100,20);
        delButton.setBounds(320,100,100,20);

        //JTable(Object[][] rowData, Object[] columnNames)
        //rowData 装数据的
       //调用service 获取数据
        EmpService empService = new EmpServiceImpl();
        Object[][] rowData = empService.queryAll();
//        //columnNames 列头


        //产生tablemodel
        EmpTableModel empTableModel = EmpTableModel.getInstance();
        empTableModel.setEmps(rowData);


        empTable = new JTable(empTableModel);

        JScrollPane scrollPane = new JScrollPane(empTable);//用来装表格
        scrollPane.setBounds(0,150,900,600);

        addButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                AddFrame addFrame = new AddFrame();
                addFrame.launchFrame();
            }
        });


        updateButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                //判断用户是否选中的记录
                int rowCount = empTable.getSelectedRowCount();//得到选中的条数
                if(rowCount != 1){
                    JOptionPane.showMessageDialog(null,"请选中1条数据");
                    return;
                }
                // 代码能执行到这里，那么用户一定选中一条数据
                //首先获取用户选中的empno  获取选中的是第几行  获取第0列
                int row = empTable.getSelectedRow();
                Integer  empno = (Integer) empTable.getValueAt(row, 0);
                //根据empno，到数据库获取对应的数据


                Emp emp = empService.getById(empno);

                //将emp对象 传到UpdateFrame界面中
                UpdateFrame updateFrame = new UpdateFrame(emp);
                updateFrame.launchFrame();
            }
        });

        delButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                //判断用户是否选中的记录
                int rowCount = empTable.getSelectedRowCount();//得到选中的行数
                if(rowCount != 1){
                    JOptionPane.showMessageDialog(null,"请选中1条数据");
                    return;
                }

                // 代码能执行到这里，那么用户一定选中一条数据
                int  result = JOptionPane.showConfirmDialog(null, "是否确定要删除?");
                if(result == 0){//代表用户选择的是确定要删除
//                    首先获取用户选中的empno  获取选中的是第几行  获取第0列
                    int row = empTable.getSelectedRow();
                    Integer  empno = (Integer) empTable.getValueAt(row, 0);

                    //调用service做删除操作
                    empService.deleteById(empno);

                    Object[][] emps = empService.queryAll();
                    EmpTableModel empTableModel = EmpTableModel.getInstance();
                    empTableModel.setEmps(emps);
                    MainFrame.getEmpTable().updateUI();
                }
            }
        });

        frame.add(scrollPane);
        frame.add(addButton);
        frame.add(updateButton);
        frame.add(delButton);
    }

    public static JTable getEmpTable() {
        return empTable;
    }
}
